package cn.itcast.nems.journal.dto;

import cn.itcast.nems.common.QueryParam;
import cn.itcast.nems.studentrecord.dao.condition.ApprovalType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;

@Data
public class JournalRefundModel implements QueryParam, Serializable {
    /**
     * MY_COMMIT:我提交的、WAIT_APPROVAL:待我审核的、ALL：全部
     */
    private ApprovalType approvalType ;
    /**
     * 退费原因
     */
    private String reasonCode ;
    /**
     * 学科ID;结课目标班级所属
     */
    private String subjectId;

    /**
     * 学科名称;学籍班级所属
     */
    private String subjectName;

    /**
     * 校区ID;学籍班级所属
     */
    private String campusId;
    /**
     * 多个校区ID ;学籍标班级所属
     */
    private String campusIds;
    /**
     * 凭单ID
     */
    private String id ;
    /**
     * 发起人邮箱
     */
    private String createdBy ;
    /**
     * 退费班级ID
     */
    private Integer clazzId ;
    /**
     * 退费班级名称
     */
    private String clazzName ;
    /**
     * 创建时间-开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JsonSerialize(using = LocalDateSerializer.class)
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDate createdStartTime ;
    /**
     * 创建时间-结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JsonSerialize(using = LocalDateSerializer.class)
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDate createdEndTime ;
    /**
     * 状态;枚举值：草稿｜DRAFT、审批中｜PENDING、审批通过处理中｜APPROVED、审批未通过且流程结束｜REJECTED、审批通过并处理完成｜FINISHED
     */
    private String state ;
    /**
     * 单据来源， DROPOUT_REFUND|退费退费、REFUND|退学凭单
     */
    private String receiptSource ;

    /**
     * 退费金额-下限
     */
    private BigDecimal minAmount ;
    /**
     * 退费金额上限
     */
    private BigDecimal maxAmount ;
    /**
     * 学生姓名
     */
    private String studentName ;
}
